We discussed two different types of networked systems architecture: client-server and peer-to-peer. These are described below.

\begin{itemize}
	\item \textbf{Client-server} This architecture comprises of multiple clients connecting to a single server. This server handles the communication between the clients. For example, within the context of an instant messaging service, messages are sent to the server, which then sends these messages to the appropriate client. This places a burden on the server, in that all communication must be sent to it and then forwarded on. This introduces a single point-of-failure: if the server goes offline, then the clients will be unable to communicate with each other.
	\item \textbf{Peer-to-peer} In contrast to the client-server architecture, a peer-to-peer architecture essentially makes clients into both clients and servers: they communicate with each other, rather than relaying through a server. Within the context of an instant messaging service, this means that messages are sent directly to the recipient. This removes the disadvantages outlined for the client-server architecture, but introduces more complexity within the client.
\end{itemize}

Our requirements, described in chapter 2, include the concept of users as a \textit{must have} feature. This does not fit well within a peer-to-peer architecture, as peers would each have to store a list of users and passwords. Not only does this introduce security concerns, but issues relating to synchronisation. This could be resolved by using a central authentication server, but this approach would introduce the disadvantages listed for the client-server architecture, as well as more complexity within the client.

In general, we found that our requirements were better suited to a client-server architecture. In addition, a peer-to-peer architecture would be more complex, and thus more difficult to implement. Therefore, a client-server architecture was adopted.